package com.zshan.clinic.database.model;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ClinicFollowupExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    private Integer limit;

    private Integer offset;

    public ClinicFollowupExample() {
        oredCriteria = new ArrayList<>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setOffset(Integer offset) {
        this.offset = offset;
    }

    public Integer getOffset() {
        return offset;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andFollowupIdIsNull() {
            addCriterion("followup_id is null");
            return (Criteria) this;
        }

        public Criteria andFollowupIdIsNotNull() {
            addCriterion("followup_id is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupIdEqualTo(Long value) {
            addCriterion("followup_id =", value, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdNotEqualTo(Long value) {
            addCriterion("followup_id <>", value, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdGreaterThan(Long value) {
            addCriterion("followup_id >", value, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdGreaterThanOrEqualTo(Long value) {
            addCriterion("followup_id >=", value, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdLessThan(Long value) {
            addCriterion("followup_id <", value, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdLessThanOrEqualTo(Long value) {
            addCriterion("followup_id <=", value, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdIn(List<Long> values) {
            addCriterion("followup_id in", values, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdNotIn(List<Long> values) {
            addCriterion("followup_id not in", values, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdBetween(Long value1, Long value2) {
            addCriterion("followup_id between", value1, value2, "followupId");
            return (Criteria) this;
        }

        public Criteria andFollowupIdNotBetween(Long value1, Long value2) {
            addCriterion("followup_id not between", value1, value2, "followupId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdIsNull() {
            addCriterion("medical_id is null");
            return (Criteria) this;
        }

        public Criteria andMedicalIdIsNotNull() {
            addCriterion("medical_id is not null");
            return (Criteria) this;
        }

        public Criteria andMedicalIdEqualTo(Long value) {
            addCriterion("medical_id =", value, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdNotEqualTo(Long value) {
            addCriterion("medical_id <>", value, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdGreaterThan(Long value) {
            addCriterion("medical_id >", value, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdGreaterThanOrEqualTo(Long value) {
            addCriterion("medical_id >=", value, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdLessThan(Long value) {
            addCriterion("medical_id <", value, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdLessThanOrEqualTo(Long value) {
            addCriterion("medical_id <=", value, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdIn(List<Long> values) {
            addCriterion("medical_id in", values, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdNotIn(List<Long> values) {
            addCriterion("medical_id not in", values, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdBetween(Long value1, Long value2) {
            addCriterion("medical_id between", value1, value2, "medicalId");
            return (Criteria) this;
        }

        public Criteria andMedicalIdNotBetween(Long value1, Long value2) {
            addCriterion("medical_id not between", value1, value2, "medicalId");
            return (Criteria) this;
        }

        public Criteria andVisitNoIsNull() {
            addCriterion("visit_no is null");
            return (Criteria) this;
        }

        public Criteria andVisitNoIsNotNull() {
            addCriterion("visit_no is not null");
            return (Criteria) this;
        }

        public Criteria andVisitNoEqualTo(String value) {
            addCriterion("visit_no =", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoNotEqualTo(String value) {
            addCriterion("visit_no <>", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoGreaterThan(String value) {
            addCriterion("visit_no >", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoGreaterThanOrEqualTo(String value) {
            addCriterion("visit_no >=", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoLessThan(String value) {
            addCriterion("visit_no <", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoLessThanOrEqualTo(String value) {
            addCriterion("visit_no <=", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoLike(String value) {
            addCriterion("visit_no like", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoNotLike(String value) {
            addCriterion("visit_no not like", value, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoIn(List<String> values) {
            addCriterion("visit_no in", values, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoNotIn(List<String> values) {
            addCriterion("visit_no not in", values, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoBetween(String value1, String value2) {
            addCriterion("visit_no between", value1, value2, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitNoNotBetween(String value1, String value2) {
            addCriterion("visit_no not between", value1, value2, "visitNo");
            return (Criteria) this;
        }

        public Criteria andVisitDateIsNull() {
            addCriterion("visit_date is null");
            return (Criteria) this;
        }

        public Criteria andVisitDateIsNotNull() {
            addCriterion("visit_date is not null");
            return (Criteria) this;
        }

        public Criteria andVisitDateEqualTo(LocalDate value) {
            addCriterion("visit_date =", value, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateNotEqualTo(LocalDate value) {
            addCriterion("visit_date <>", value, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateGreaterThan(LocalDate value) {
            addCriterion("visit_date >", value, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateGreaterThanOrEqualTo(LocalDate value) {
            addCriterion("visit_date >=", value, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateLessThan(LocalDate value) {
            addCriterion("visit_date <", value, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateLessThanOrEqualTo(LocalDate value) {
            addCriterion("visit_date <=", value, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateIn(List<LocalDate> values) {
            addCriterion("visit_date in", values, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateNotIn(List<LocalDate> values) {
            addCriterion("visit_date not in", values, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateBetween(LocalDate value1, LocalDate value2) {
            addCriterion("visit_date between", value1, value2, "visitDate");
            return (Criteria) this;
        }

        public Criteria andVisitDateNotBetween(LocalDate value1, LocalDate value2) {
            addCriterion("visit_date not between", value1, value2, "visitDate");
            return (Criteria) this;
        }

        public Criteria andDoctorIdIsNull() {
            addCriterion("doctor_id is null");
            return (Criteria) this;
        }

        public Criteria andDoctorIdIsNotNull() {
            addCriterion("doctor_id is not null");
            return (Criteria) this;
        }

        public Criteria andDoctorIdEqualTo(Long value) {
            addCriterion("doctor_id =", value, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdNotEqualTo(Long value) {
            addCriterion("doctor_id <>", value, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdGreaterThan(Long value) {
            addCriterion("doctor_id >", value, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdGreaterThanOrEqualTo(Long value) {
            addCriterion("doctor_id >=", value, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdLessThan(Long value) {
            addCriterion("doctor_id <", value, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdLessThanOrEqualTo(Long value) {
            addCriterion("doctor_id <=", value, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdIn(List<Long> values) {
            addCriterion("doctor_id in", values, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdNotIn(List<Long> values) {
            addCriterion("doctor_id not in", values, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdBetween(Long value1, Long value2) {
            addCriterion("doctor_id between", value1, value2, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorIdNotBetween(Long value1, Long value2) {
            addCriterion("doctor_id not between", value1, value2, "doctorId");
            return (Criteria) this;
        }

        public Criteria andDoctorNameIsNull() {
            addCriterion("doctor_name is null");
            return (Criteria) this;
        }

        public Criteria andDoctorNameIsNotNull() {
            addCriterion("doctor_name is not null");
            return (Criteria) this;
        }

        public Criteria andDoctorNameEqualTo(String value) {
            addCriterion("doctor_name =", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameNotEqualTo(String value) {
            addCriterion("doctor_name <>", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameGreaterThan(String value) {
            addCriterion("doctor_name >", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameGreaterThanOrEqualTo(String value) {
            addCriterion("doctor_name >=", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameLessThan(String value) {
            addCriterion("doctor_name <", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameLessThanOrEqualTo(String value) {
            addCriterion("doctor_name <=", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameLike(String value) {
            addCriterion("doctor_name like", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameNotLike(String value) {
            addCriterion("doctor_name not like", value, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameIn(List<String> values) {
            addCriterion("doctor_name in", values, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameNotIn(List<String> values) {
            addCriterion("doctor_name not in", values, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameBetween(String value1, String value2) {
            addCriterion("doctor_name between", value1, value2, "doctorName");
            return (Criteria) this;
        }

        public Criteria andDoctorNameNotBetween(String value1, String value2) {
            addCriterion("doctor_name not between", value1, value2, "doctorName");
            return (Criteria) this;
        }

        public Criteria andPatientIdIsNull() {
            addCriterion("patient_id is null");
            return (Criteria) this;
        }

        public Criteria andPatientIdIsNotNull() {
            addCriterion("patient_id is not null");
            return (Criteria) this;
        }

        public Criteria andPatientIdEqualTo(Long value) {
            addCriterion("patient_id =", value, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdNotEqualTo(Long value) {
            addCriterion("patient_id <>", value, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdGreaterThan(Long value) {
            addCriterion("patient_id >", value, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdGreaterThanOrEqualTo(Long value) {
            addCriterion("patient_id >=", value, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdLessThan(Long value) {
            addCriterion("patient_id <", value, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdLessThanOrEqualTo(Long value) {
            addCriterion("patient_id <=", value, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdIn(List<Long> values) {
            addCriterion("patient_id in", values, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdNotIn(List<Long> values) {
            addCriterion("patient_id not in", values, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdBetween(Long value1, Long value2) {
            addCriterion("patient_id between", value1, value2, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientIdNotBetween(Long value1, Long value2) {
            addCriterion("patient_id not between", value1, value2, "patientId");
            return (Criteria) this;
        }

        public Criteria andPatientNameIsNull() {
            addCriterion("patient_name is null");
            return (Criteria) this;
        }

        public Criteria andPatientNameIsNotNull() {
            addCriterion("patient_name is not null");
            return (Criteria) this;
        }

        public Criteria andPatientNameEqualTo(String value) {
            addCriterion("patient_name =", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameNotEqualTo(String value) {
            addCriterion("patient_name <>", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameGreaterThan(String value) {
            addCriterion("patient_name >", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameGreaterThanOrEqualTo(String value) {
            addCriterion("patient_name >=", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameLessThan(String value) {
            addCriterion("patient_name <", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameLessThanOrEqualTo(String value) {
            addCriterion("patient_name <=", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameLike(String value) {
            addCriterion("patient_name like", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameNotLike(String value) {
            addCriterion("patient_name not like", value, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameIn(List<String> values) {
            addCriterion("patient_name in", values, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameNotIn(List<String> values) {
            addCriterion("patient_name not in", values, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameBetween(String value1, String value2) {
            addCriterion("patient_name between", value1, value2, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientNameNotBetween(String value1, String value2) {
            addCriterion("patient_name not between", value1, value2, "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientGenderIsNull() {
            addCriterion("patient_gender is null");
            return (Criteria) this;
        }

        public Criteria andPatientGenderIsNotNull() {
            addCriterion("patient_gender is not null");
            return (Criteria) this;
        }

        public Criteria andPatientGenderEqualTo(String value) {
            addCriterion("patient_gender =", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderNotEqualTo(String value) {
            addCriterion("patient_gender <>", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderGreaterThan(String value) {
            addCriterion("patient_gender >", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderGreaterThanOrEqualTo(String value) {
            addCriterion("patient_gender >=", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderLessThan(String value) {
            addCriterion("patient_gender <", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderLessThanOrEqualTo(String value) {
            addCriterion("patient_gender <=", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderLike(String value) {
            addCriterion("patient_gender like", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderNotLike(String value) {
            addCriterion("patient_gender not like", value, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderIn(List<String> values) {
            addCriterion("patient_gender in", values, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderNotIn(List<String> values) {
            addCriterion("patient_gender not in", values, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderBetween(String value1, String value2) {
            addCriterion("patient_gender between", value1, value2, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientGenderNotBetween(String value1, String value2) {
            addCriterion("patient_gender not between", value1, value2, "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneIsNull() {
            addCriterion("patient_phone is null");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneIsNotNull() {
            addCriterion("patient_phone is not null");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneEqualTo(String value) {
            addCriterion("patient_phone =", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneNotEqualTo(String value) {
            addCriterion("patient_phone <>", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneGreaterThan(String value) {
            addCriterion("patient_phone >", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneGreaterThanOrEqualTo(String value) {
            addCriterion("patient_phone >=", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneLessThan(String value) {
            addCriterion("patient_phone <", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneLessThanOrEqualTo(String value) {
            addCriterion("patient_phone <=", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneLike(String value) {
            addCriterion("patient_phone like", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneNotLike(String value) {
            addCriterion("patient_phone not like", value, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneIn(List<String> values) {
            addCriterion("patient_phone in", values, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneNotIn(List<String> values) {
            addCriterion("patient_phone not in", values, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneBetween(String value1, String value2) {
            addCriterion("patient_phone between", value1, value2, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneNotBetween(String value1, String value2) {
            addCriterion("patient_phone not between", value1, value2, "patientPhone");
            return (Criteria) this;
        }

        public Criteria andIdCardIsNull() {
            addCriterion("id_card is null");
            return (Criteria) this;
        }

        public Criteria andIdCardIsNotNull() {
            addCriterion("id_card is not null");
            return (Criteria) this;
        }

        public Criteria andIdCardEqualTo(String value) {
            addCriterion("id_card =", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardNotEqualTo(String value) {
            addCriterion("id_card <>", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardGreaterThan(String value) {
            addCriterion("id_card >", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardGreaterThanOrEqualTo(String value) {
            addCriterion("id_card >=", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardLessThan(String value) {
            addCriterion("id_card <", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardLessThanOrEqualTo(String value) {
            addCriterion("id_card <=", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardLike(String value) {
            addCriterion("id_card like", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardNotLike(String value) {
            addCriterion("id_card not like", value, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardIn(List<String> values) {
            addCriterion("id_card in", values, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardNotIn(List<String> values) {
            addCriterion("id_card not in", values, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardBetween(String value1, String value2) {
            addCriterion("id_card between", value1, value2, "idCard");
            return (Criteria) this;
        }

        public Criteria andIdCardNotBetween(String value1, String value2) {
            addCriterion("id_card not between", value1, value2, "idCard");
            return (Criteria) this;
        }

        public Criteria andComplaintIsNull() {
            addCriterion("complaint is null");
            return (Criteria) this;
        }

        public Criteria andComplaintIsNotNull() {
            addCriterion("complaint is not null");
            return (Criteria) this;
        }

        public Criteria andComplaintEqualTo(String value) {
            addCriterion("complaint =", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintNotEqualTo(String value) {
            addCriterion("complaint <>", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintGreaterThan(String value) {
            addCriterion("complaint >", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintGreaterThanOrEqualTo(String value) {
            addCriterion("complaint >=", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintLessThan(String value) {
            addCriterion("complaint <", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintLessThanOrEqualTo(String value) {
            addCriterion("complaint <=", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintLike(String value) {
            addCriterion("complaint like", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintNotLike(String value) {
            addCriterion("complaint not like", value, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintIn(List<String> values) {
            addCriterion("complaint in", values, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintNotIn(List<String> values) {
            addCriterion("complaint not in", values, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintBetween(String value1, String value2) {
            addCriterion("complaint between", value1, value2, "complaint");
            return (Criteria) this;
        }

        public Criteria andComplaintNotBetween(String value1, String value2) {
            addCriterion("complaint not between", value1, value2, "complaint");
            return (Criteria) this;
        }

        public Criteria andDiagnosisIsNull() {
            addCriterion("diagnosis is null");
            return (Criteria) this;
        }

        public Criteria andDiagnosisIsNotNull() {
            addCriterion("diagnosis is not null");
            return (Criteria) this;
        }

        public Criteria andDiagnosisEqualTo(String value) {
            addCriterion("diagnosis =", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisNotEqualTo(String value) {
            addCriterion("diagnosis <>", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisGreaterThan(String value) {
            addCriterion("diagnosis >", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisGreaterThanOrEqualTo(String value) {
            addCriterion("diagnosis >=", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisLessThan(String value) {
            addCriterion("diagnosis <", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisLessThanOrEqualTo(String value) {
            addCriterion("diagnosis <=", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisLike(String value) {
            addCriterion("diagnosis like", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisNotLike(String value) {
            addCriterion("diagnosis not like", value, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisIn(List<String> values) {
            addCriterion("diagnosis in", values, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisNotIn(List<String> values) {
            addCriterion("diagnosis not in", values, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisBetween(String value1, String value2) {
            addCriterion("diagnosis between", value1, value2, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisNotBetween(String value1, String value2) {
            addCriterion("diagnosis not between", value1, value2, "diagnosis");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeIsNull() {
            addCriterion("diagnosis_time is null");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeIsNotNull() {
            addCriterion("diagnosis_time is not null");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeEqualTo(Date value) {
            addCriterion("diagnosis_time =", value, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeNotEqualTo(Date value) {
            addCriterion("diagnosis_time <>", value, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeGreaterThan(Date value) {
            addCriterion("diagnosis_time >", value, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("diagnosis_time >=", value, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeLessThan(Date value) {
            addCriterion("diagnosis_time <", value, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeLessThanOrEqualTo(Date value) {
            addCriterion("diagnosis_time <=", value, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeIn(List<Date> values) {
            addCriterion("diagnosis_time in", values, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeNotIn(List<Date> values) {
            addCriterion("diagnosis_time not in", values, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeBetween(Date value1, Date value2) {
            addCriterion("diagnosis_time between", value1, value2, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andDiagnosisTimeNotBetween(Date value1, Date value2) {
            addCriterion("diagnosis_time not between", value1, value2, "diagnosisTime");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelIsNull() {
            addCriterion("followup_channel is null");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelIsNotNull() {
            addCriterion("followup_channel is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelEqualTo(String value) {
            addCriterion("followup_channel =", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelNotEqualTo(String value) {
            addCriterion("followup_channel <>", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelGreaterThan(String value) {
            addCriterion("followup_channel >", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelGreaterThanOrEqualTo(String value) {
            addCriterion("followup_channel >=", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelLessThan(String value) {
            addCriterion("followup_channel <", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelLessThanOrEqualTo(String value) {
            addCriterion("followup_channel <=", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelLike(String value) {
            addCriterion("followup_channel like", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelNotLike(String value) {
            addCriterion("followup_channel not like", value, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelIn(List<String> values) {
            addCriterion("followup_channel in", values, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelNotIn(List<String> values) {
            addCriterion("followup_channel not in", values, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelBetween(String value1, String value2) {
            addCriterion("followup_channel between", value1, value2, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelNotBetween(String value1, String value2) {
            addCriterion("followup_channel not between", value1, value2, "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupDateIsNull() {
            addCriterion("followup_date is null");
            return (Criteria) this;
        }

        public Criteria andFollowupDateIsNotNull() {
            addCriterion("followup_date is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupDateEqualTo(LocalDate value) {
            addCriterion("followup_date =", value, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateNotEqualTo(LocalDate value) {
            addCriterion("followup_date <>", value, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateGreaterThan(LocalDate value) {
            addCriterion("followup_date >", value, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateGreaterThanOrEqualTo(LocalDate value) {
            addCriterion("followup_date >=", value, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateLessThan(LocalDate value) {
            addCriterion("followup_date <", value, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateLessThanOrEqualTo(LocalDate value) {
            addCriterion("followup_date <=", value, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateIn(List<LocalDate> values) {
            addCriterion("followup_date in", values, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateNotIn(List<LocalDate> values) {
            addCriterion("followup_date not in", values, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateBetween(LocalDate value1, LocalDate value2) {
            addCriterion("followup_date between", value1, value2, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupDateNotBetween(LocalDate value1, LocalDate value2) {
            addCriterion("followup_date not between", value1, value2, "followupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupResultIsNull() {
            addCriterion("followup_result is null");
            return (Criteria) this;
        }

        public Criteria andFollowupResultIsNotNull() {
            addCriterion("followup_result is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupResultEqualTo(String value) {
            addCriterion("followup_result =", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultNotEqualTo(String value) {
            addCriterion("followup_result <>", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultGreaterThan(String value) {
            addCriterion("followup_result >", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultGreaterThanOrEqualTo(String value) {
            addCriterion("followup_result >=", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultLessThan(String value) {
            addCriterion("followup_result <", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultLessThanOrEqualTo(String value) {
            addCriterion("followup_result <=", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultLike(String value) {
            addCriterion("followup_result like", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultNotLike(String value) {
            addCriterion("followup_result not like", value, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultIn(List<String> values) {
            addCriterion("followup_result in", values, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultNotIn(List<String> values) {
            addCriterion("followup_result not in", values, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultBetween(String value1, String value2) {
            addCriterion("followup_result between", value1, value2, "followupResult");
            return (Criteria) this;
        }

        public Criteria andFollowupResultNotBetween(String value1, String value2) {
            addCriterion("followup_result not between", value1, value2, "followupResult");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsIsNull() {
            addCriterion("attachment_urls is null");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsIsNotNull() {
            addCriterion("attachment_urls is not null");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsEqualTo(String value) {
            addCriterion("attachment_urls =", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsNotEqualTo(String value) {
            addCriterion("attachment_urls <>", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsGreaterThan(String value) {
            addCriterion("attachment_urls >", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsGreaterThanOrEqualTo(String value) {
            addCriterion("attachment_urls >=", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsLessThan(String value) {
            addCriterion("attachment_urls <", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsLessThanOrEqualTo(String value) {
            addCriterion("attachment_urls <=", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsLike(String value) {
            addCriterion("attachment_urls like", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsNotLike(String value) {
            addCriterion("attachment_urls not like", value, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsIn(List<String> values) {
            addCriterion("attachment_urls in", values, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsNotIn(List<String> values) {
            addCriterion("attachment_urls not in", values, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsBetween(String value1, String value2) {
            addCriterion("attachment_urls between", value1, value2, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsNotBetween(String value1, String value2) {
            addCriterion("attachment_urls not between", value1, value2, "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdIsNull() {
            addCriterion("followup_emp_id is null");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdIsNotNull() {
            addCriterion("followup_emp_id is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdEqualTo(Long value) {
            addCriterion("followup_emp_id =", value, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdNotEqualTo(Long value) {
            addCriterion("followup_emp_id <>", value, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdGreaterThan(Long value) {
            addCriterion("followup_emp_id >", value, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdGreaterThanOrEqualTo(Long value) {
            addCriterion("followup_emp_id >=", value, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdLessThan(Long value) {
            addCriterion("followup_emp_id <", value, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdLessThanOrEqualTo(Long value) {
            addCriterion("followup_emp_id <=", value, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdIn(List<Long> values) {
            addCriterion("followup_emp_id in", values, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdNotIn(List<Long> values) {
            addCriterion("followup_emp_id not in", values, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdBetween(Long value1, Long value2) {
            addCriterion("followup_emp_id between", value1, value2, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpIdNotBetween(Long value1, Long value2) {
            addCriterion("followup_emp_id not between", value1, value2, "followupEmpId");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameIsNull() {
            addCriterion("followup_emp_name is null");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameIsNotNull() {
            addCriterion("followup_emp_name is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameEqualTo(String value) {
            addCriterion("followup_emp_name =", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameNotEqualTo(String value) {
            addCriterion("followup_emp_name <>", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameGreaterThan(String value) {
            addCriterion("followup_emp_name >", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameGreaterThanOrEqualTo(String value) {
            addCriterion("followup_emp_name >=", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameLessThan(String value) {
            addCriterion("followup_emp_name <", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameLessThanOrEqualTo(String value) {
            addCriterion("followup_emp_name <=", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameLike(String value) {
            addCriterion("followup_emp_name like", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameNotLike(String value) {
            addCriterion("followup_emp_name not like", value, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameIn(List<String> values) {
            addCriterion("followup_emp_name in", values, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameNotIn(List<String> values) {
            addCriterion("followup_emp_name not in", values, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameBetween(String value1, String value2) {
            addCriterion("followup_emp_name between", value1, value2, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameNotBetween(String value1, String value2) {
            addCriterion("followup_emp_name not between", value1, value2, "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateIsNull() {
            addCriterion("real_followup_date is null");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateIsNotNull() {
            addCriterion("real_followup_date is not null");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateEqualTo(LocalDate value) {
            addCriterion("real_followup_date =", value, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateNotEqualTo(LocalDate value) {
            addCriterion("real_followup_date <>", value, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateGreaterThan(LocalDate value) {
            addCriterion("real_followup_date >", value, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateGreaterThanOrEqualTo(LocalDate value) {
            addCriterion("real_followup_date >=", value, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateLessThan(LocalDate value) {
            addCriterion("real_followup_date <", value, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateLessThanOrEqualTo(LocalDate value) {
            addCriterion("real_followup_date <=", value, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateIn(List<LocalDate> values) {
            addCriterion("real_followup_date in", values, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateNotIn(List<LocalDate> values) {
            addCriterion("real_followup_date not in", values, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateBetween(LocalDate value1, LocalDate value2) {
            addCriterion("real_followup_date between", value1, value2, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andRealFollowupDateNotBetween(LocalDate value1, LocalDate value2) {
            addCriterion("real_followup_date not between", value1, value2, "realFollowupDate");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusIsNull() {
            addCriterion("followup_status is null");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusIsNotNull() {
            addCriterion("followup_status is not null");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusEqualTo(String value) {
            addCriterion("followup_status =", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusNotEqualTo(String value) {
            addCriterion("followup_status <>", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusGreaterThan(String value) {
            addCriterion("followup_status >", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusGreaterThanOrEqualTo(String value) {
            addCriterion("followup_status >=", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusLessThan(String value) {
            addCriterion("followup_status <", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusLessThanOrEqualTo(String value) {
            addCriterion("followup_status <=", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusLike(String value) {
            addCriterion("followup_status like", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusNotLike(String value) {
            addCriterion("followup_status not like", value, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusIn(List<String> values) {
            addCriterion("followup_status in", values, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusNotIn(List<String> values) {
            addCriterion("followup_status not in", values, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusBetween(String value1, String value2) {
            addCriterion("followup_status between", value1, value2, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusNotBetween(String value1, String value2) {
            addCriterion("followup_status not between", value1, value2, "followupStatus");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdIsNull() {
            addCriterion("operator_user_id is null");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdIsNotNull() {
            addCriterion("operator_user_id is not null");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdEqualTo(Long value) {
            addCriterion("operator_user_id =", value, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdNotEqualTo(Long value) {
            addCriterion("operator_user_id <>", value, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdGreaterThan(Long value) {
            addCriterion("operator_user_id >", value, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdGreaterThanOrEqualTo(Long value) {
            addCriterion("operator_user_id >=", value, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdLessThan(Long value) {
            addCriterion("operator_user_id <", value, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdLessThanOrEqualTo(Long value) {
            addCriterion("operator_user_id <=", value, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdIn(List<Long> values) {
            addCriterion("operator_user_id in", values, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdNotIn(List<Long> values) {
            addCriterion("operator_user_id not in", values, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdBetween(Long value1, Long value2) {
            addCriterion("operator_user_id between", value1, value2, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorUserIdNotBetween(Long value1, Long value2) {
            addCriterion("operator_user_id not between", value1, value2, "operatorUserId");
            return (Criteria) this;
        }

        public Criteria andOperatorByIsNull() {
            addCriterion("operator_by is null");
            return (Criteria) this;
        }

        public Criteria andOperatorByIsNotNull() {
            addCriterion("operator_by is not null");
            return (Criteria) this;
        }

        public Criteria andOperatorByEqualTo(String value) {
            addCriterion("operator_by =", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByNotEqualTo(String value) {
            addCriterion("operator_by <>", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByGreaterThan(String value) {
            addCriterion("operator_by >", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByGreaterThanOrEqualTo(String value) {
            addCriterion("operator_by >=", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByLessThan(String value) {
            addCriterion("operator_by <", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByLessThanOrEqualTo(String value) {
            addCriterion("operator_by <=", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByLike(String value) {
            addCriterion("operator_by like", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByNotLike(String value) {
            addCriterion("operator_by not like", value, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByIn(List<String> values) {
            addCriterion("operator_by in", values, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByNotIn(List<String> values) {
            addCriterion("operator_by not in", values, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByBetween(String value1, String value2) {
            addCriterion("operator_by between", value1, value2, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperatorByNotBetween(String value1, String value2) {
            addCriterion("operator_by not between", value1, value2, "operatorBy");
            return (Criteria) this;
        }

        public Criteria andOperateTimeIsNull() {
            addCriterion("operate_time is null");
            return (Criteria) this;
        }

        public Criteria andOperateTimeIsNotNull() {
            addCriterion("operate_time is not null");
            return (Criteria) this;
        }

        public Criteria andOperateTimeEqualTo(Date value) {
            addCriterion("operate_time =", value, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeNotEqualTo(Date value) {
            addCriterion("operate_time <>", value, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeGreaterThan(Date value) {
            addCriterion("operate_time >", value, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("operate_time >=", value, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeLessThan(Date value) {
            addCriterion("operate_time <", value, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeLessThanOrEqualTo(Date value) {
            addCriterion("operate_time <=", value, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeIn(List<Date> values) {
            addCriterion("operate_time in", values, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeNotIn(List<Date> values) {
            addCriterion("operate_time not in", values, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeBetween(Date value1, Date value2) {
            addCriterion("operate_time between", value1, value2, "operateTime");
            return (Criteria) this;
        }

        public Criteria andOperateTimeNotBetween(Date value1, Date value2) {
            addCriterion("operate_time not between", value1, value2, "operateTime");
            return (Criteria) this;
        }

        public Criteria andClinicIdIsNull() {
            addCriterion("clinic_id is null");
            return (Criteria) this;
        }

        public Criteria andClinicIdIsNotNull() {
            addCriterion("clinic_id is not null");
            return (Criteria) this;
        }

        public Criteria andClinicIdEqualTo(Long value) {
            addCriterion("clinic_id =", value, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdNotEqualTo(Long value) {
            addCriterion("clinic_id <>", value, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdGreaterThan(Long value) {
            addCriterion("clinic_id >", value, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdGreaterThanOrEqualTo(Long value) {
            addCriterion("clinic_id >=", value, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdLessThan(Long value) {
            addCriterion("clinic_id <", value, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdLessThanOrEqualTo(Long value) {
            addCriterion("clinic_id <=", value, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdIn(List<Long> values) {
            addCriterion("clinic_id in", values, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdNotIn(List<Long> values) {
            addCriterion("clinic_id not in", values, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdBetween(Long value1, Long value2) {
            addCriterion("clinic_id between", value1, value2, "clinicId");
            return (Criteria) this;
        }

        public Criteria andClinicIdNotBetween(Long value1, Long value2) {
            addCriterion("clinic_id not between", value1, value2, "clinicId");
            return (Criteria) this;
        }

        public Criteria andIsEnabledIsNull() {
            addCriterion("is_enabled is null");
            return (Criteria) this;
        }

        public Criteria andIsEnabledIsNotNull() {
            addCriterion("is_enabled is not null");
            return (Criteria) this;
        }

        public Criteria andIsEnabledEqualTo(String value) {
            addCriterion("is_enabled =", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledNotEqualTo(String value) {
            addCriterion("is_enabled <>", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledGreaterThan(String value) {
            addCriterion("is_enabled >", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledGreaterThanOrEqualTo(String value) {
            addCriterion("is_enabled >=", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledLessThan(String value) {
            addCriterion("is_enabled <", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledLessThanOrEqualTo(String value) {
            addCriterion("is_enabled <=", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledLike(String value) {
            addCriterion("is_enabled like", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledNotLike(String value) {
            addCriterion("is_enabled not like", value, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledIn(List<String> values) {
            addCriterion("is_enabled in", values, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledNotIn(List<String> values) {
            addCriterion("is_enabled not in", values, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledBetween(String value1, String value2) {
            addCriterion("is_enabled between", value1, value2, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsEnabledNotBetween(String value1, String value2) {
            addCriterion("is_enabled not between", value1, value2, "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsDeleteIsNull() {
            addCriterion("is_delete is null");
            return (Criteria) this;
        }

        public Criteria andIsDeleteIsNotNull() {
            addCriterion("is_delete is not null");
            return (Criteria) this;
        }

        public Criteria andIsDeleteEqualTo(String value) {
            addCriterion("is_delete =", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteNotEqualTo(String value) {
            addCriterion("is_delete <>", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteGreaterThan(String value) {
            addCriterion("is_delete >", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteGreaterThanOrEqualTo(String value) {
            addCriterion("is_delete >=", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteLessThan(String value) {
            addCriterion("is_delete <", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteLessThanOrEqualTo(String value) {
            addCriterion("is_delete <=", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteLike(String value) {
            addCriterion("is_delete like", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteNotLike(String value) {
            addCriterion("is_delete not like", value, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteIn(List<String> values) {
            addCriterion("is_delete in", values, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteNotIn(List<String> values) {
            addCriterion("is_delete not in", values, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteBetween(String value1, String value2) {
            addCriterion("is_delete between", value1, value2, "isDelete");
            return (Criteria) this;
        }

        public Criteria andIsDeleteNotBetween(String value1, String value2) {
            addCriterion("is_delete not between", value1, value2, "isDelete");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdIsNull() {
            addCriterion("create_user_id is null");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdIsNotNull() {
            addCriterion("create_user_id is not null");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdEqualTo(Long value) {
            addCriterion("create_user_id =", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdNotEqualTo(Long value) {
            addCriterion("create_user_id <>", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdGreaterThan(Long value) {
            addCriterion("create_user_id >", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdGreaterThanOrEqualTo(Long value) {
            addCriterion("create_user_id >=", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdLessThan(Long value) {
            addCriterion("create_user_id <", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdLessThanOrEqualTo(Long value) {
            addCriterion("create_user_id <=", value, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdIn(List<Long> values) {
            addCriterion("create_user_id in", values, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdNotIn(List<Long> values) {
            addCriterion("create_user_id not in", values, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdBetween(Long value1, Long value2) {
            addCriterion("create_user_id between", value1, value2, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateUserIdNotBetween(Long value1, Long value2) {
            addCriterion("create_user_id not between", value1, value2, "createUserId");
            return (Criteria) this;
        }

        public Criteria andCreateByIsNull() {
            addCriterion("create_by is null");
            return (Criteria) this;
        }

        public Criteria andCreateByIsNotNull() {
            addCriterion("create_by is not null");
            return (Criteria) this;
        }

        public Criteria andCreateByEqualTo(String value) {
            addCriterion("create_by =", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotEqualTo(String value) {
            addCriterion("create_by <>", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByGreaterThan(String value) {
            addCriterion("create_by >", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByGreaterThanOrEqualTo(String value) {
            addCriterion("create_by >=", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByLessThan(String value) {
            addCriterion("create_by <", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByLessThanOrEqualTo(String value) {
            addCriterion("create_by <=", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByLike(String value) {
            addCriterion("create_by like", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotLike(String value) {
            addCriterion("create_by not like", value, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByIn(List<String> values) {
            addCriterion("create_by in", values, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotIn(List<String> values) {
            addCriterion("create_by not in", values, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByBetween(String value1, String value2) {
            addCriterion("create_by between", value1, value2, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateByNotBetween(String value1, String value2) {
            addCriterion("create_by not between", value1, value2, "createBy");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNull() {
            addCriterion("create_time is null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIsNotNull() {
            addCriterion("create_time is not null");
            return (Criteria) this;
        }

        public Criteria andCreateTimeEqualTo(Date value) {
            addCriterion("create_time =", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotEqualTo(Date value) {
            addCriterion("create_time <>", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThan(Date value) {
            addCriterion("create_time >", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("create_time >=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThan(Date value) {
            addCriterion("create_time <", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
            addCriterion("create_time <=", value, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeIn(List<Date> values) {
            addCriterion("create_time in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotIn(List<Date> values) {
            addCriterion("create_time not in", values, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeBetween(Date value1, Date value2) {
            addCriterion("create_time between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
            addCriterion("create_time not between", value1, value2, "createTime");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdIsNull() {
            addCriterion("update_user_id is null");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdIsNotNull() {
            addCriterion("update_user_id is not null");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdEqualTo(Long value) {
            addCriterion("update_user_id =", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdNotEqualTo(Long value) {
            addCriterion("update_user_id <>", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdGreaterThan(Long value) {
            addCriterion("update_user_id >", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdGreaterThanOrEqualTo(Long value) {
            addCriterion("update_user_id >=", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdLessThan(Long value) {
            addCriterion("update_user_id <", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdLessThanOrEqualTo(Long value) {
            addCriterion("update_user_id <=", value, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdIn(List<Long> values) {
            addCriterion("update_user_id in", values, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdNotIn(List<Long> values) {
            addCriterion("update_user_id not in", values, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdBetween(Long value1, Long value2) {
            addCriterion("update_user_id between", value1, value2, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateUserIdNotBetween(Long value1, Long value2) {
            addCriterion("update_user_id not between", value1, value2, "updateUserId");
            return (Criteria) this;
        }

        public Criteria andUpdateByIsNull() {
            addCriterion("update_by is null");
            return (Criteria) this;
        }

        public Criteria andUpdateByIsNotNull() {
            addCriterion("update_by is not null");
            return (Criteria) this;
        }

        public Criteria andUpdateByEqualTo(String value) {
            addCriterion("update_by =", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByNotEqualTo(String value) {
            addCriterion("update_by <>", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByGreaterThan(String value) {
            addCriterion("update_by >", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByGreaterThanOrEqualTo(String value) {
            addCriterion("update_by >=", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByLessThan(String value) {
            addCriterion("update_by <", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByLessThanOrEqualTo(String value) {
            addCriterion("update_by <=", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByLike(String value) {
            addCriterion("update_by like", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByNotLike(String value) {
            addCriterion("update_by not like", value, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByIn(List<String> values) {
            addCriterion("update_by in", values, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByNotIn(List<String> values) {
            addCriterion("update_by not in", values, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByBetween(String value1, String value2) {
            addCriterion("update_by between", value1, value2, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByNotBetween(String value1, String value2) {
            addCriterion("update_by not between", value1, value2, "updateBy");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIsNull() {
            addCriterion("update_time is null");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIsNotNull() {
            addCriterion("update_time is not null");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeEqualTo(Date value) {
            addCriterion("update_time =", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotEqualTo(Date value) {
            addCriterion("update_time <>", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeGreaterThan(Date value) {
            addCriterion("update_time >", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("update_time >=", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeLessThan(Date value) {
            addCriterion("update_time <", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
            addCriterion("update_time <=", value, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeIn(List<Date> values) {
            addCriterion("update_time in", values, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotIn(List<Date> values) {
            addCriterion("update_time not in", values, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
            addCriterion("update_time between", value1, value2, "updateTime");
            return (Criteria) this;
        }

        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
            addCriterion("update_time not between", value1, value2, "updateTime");
            return (Criteria) this;
        }

        public Criteria andVisitNoLikeInsensitive(String value) {
            addCriterion("upper(visit_no) like", value.toUpperCase(), "visitNo");
            return (Criteria) this;
        }

        public Criteria andDoctorNameLikeInsensitive(String value) {
            addCriterion("upper(doctor_name) like", value.toUpperCase(), "doctorName");
            return (Criteria) this;
        }

        public Criteria andPatientNameLikeInsensitive(String value) {
            addCriterion("upper(patient_name) like", value.toUpperCase(), "patientName");
            return (Criteria) this;
        }

        public Criteria andPatientGenderLikeInsensitive(String value) {
            addCriterion("upper(patient_gender) like", value.toUpperCase(), "patientGender");
            return (Criteria) this;
        }

        public Criteria andPatientPhoneLikeInsensitive(String value) {
            addCriterion("upper(patient_phone) like", value.toUpperCase(), "patientPhone");
            return (Criteria) this;
        }

        public Criteria andIdCardLikeInsensitive(String value) {
            addCriterion("upper(id_card) like", value.toUpperCase(), "idCard");
            return (Criteria) this;
        }

        public Criteria andComplaintLikeInsensitive(String value) {
            addCriterion("upper(complaint) like", value.toUpperCase(), "complaint");
            return (Criteria) this;
        }

        public Criteria andDiagnosisLikeInsensitive(String value) {
            addCriterion("upper(diagnosis) like", value.toUpperCase(), "diagnosis");
            return (Criteria) this;
        }

        public Criteria andFollowupChannelLikeInsensitive(String value) {
            addCriterion("upper(followup_channel) like", value.toUpperCase(), "followupChannel");
            return (Criteria) this;
        }

        public Criteria andFollowupResultLikeInsensitive(String value) {
            addCriterion("upper(followup_result) like", value.toUpperCase(), "followupResult");
            return (Criteria) this;
        }

        public Criteria andAttachmentUrlsLikeInsensitive(String value) {
            addCriterion("upper(attachment_urls) like", value.toUpperCase(), "attachmentUrls");
            return (Criteria) this;
        }

        public Criteria andFollowupEmpNameLikeInsensitive(String value) {
            addCriterion("upper(followup_emp_name) like", value.toUpperCase(), "followupEmpName");
            return (Criteria) this;
        }

        public Criteria andFollowupStatusLikeInsensitive(String value) {
            addCriterion("upper(followup_status) like", value.toUpperCase(), "followupStatus");
            return (Criteria) this;
        }

        public Criteria andOperatorByLikeInsensitive(String value) {
            addCriterion("upper(operator_by) like", value.toUpperCase(), "operatorBy");
            return (Criteria) this;
        }

        public Criteria andIsEnabledLikeInsensitive(String value) {
            addCriterion("upper(is_enabled) like", value.toUpperCase(), "isEnabled");
            return (Criteria) this;
        }

        public Criteria andIsDeleteLikeInsensitive(String value) {
            addCriterion("upper(is_delete) like", value.toUpperCase(), "isDelete");
            return (Criteria) this;
        }

        public Criteria andCreateByLikeInsensitive(String value) {
            addCriterion("upper(create_by) like", value.toUpperCase(), "createBy");
            return (Criteria) this;
        }

        public Criteria andUpdateByLikeInsensitive(String value) {
            addCriterion("upper(update_by) like", value.toUpperCase(), "updateBy");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}